package com.smile.frame.api.es.document;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.smile.frame.config.es.constants.EsIndexNameConstant;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * order 文档
 *
 * @author LGC
 */
@Data
@Document(indexName = EsIndexNameConstant.ORDER_INDEX)
@ApiModel("order 文档")
public class Order implements Serializable {
    private static final long serialVersionUID = 837620216765101123L;

    /**
     * id
     */
    @ApiModelProperty(value = "id")
    private Long id;
    /**
     * 订单号
     */
    @ApiModelProperty(value = "订单号")
    private String orderSn;
    /**
     * 订单总额（分）
     */
    @ApiModelProperty(value = "订单总额（分）")
    private Long totalAmount;
    /**
     * 商品总数
     */
    @ApiModelProperty(value = "商品总数")
    private Integer totalQuantity;
    /**
     * 订单来源[0->PC订单；1->app订单]
     */
    @ApiModelProperty(value = "订单来源[0->PC订单；1->app订单]")
    private Integer sourceType;
    /**
     * 订单状态【101->待付款；102->用户取消；103->系统取消；201->已付款；202->申请退款；203->已退款；301->待发货；401->已发货；501->用户收货；502->系统收货；901->已完成】
     */
    @ApiModelProperty(value = "订单状态【101->待付款；102->用户取消；103->系统取消；201->已付款；202->申请退款；203->已退款；301->待发货；401->已发货；501->用户收货；502->系统收货；901->已完成】")
    private Integer status;
    /**
     * 订单备注
     */
    @ApiModelProperty(value = "订单备注")
    private String remark;
    /**
     * 会员id
     */
    @ApiModelProperty(value = "会员id")
    private Long memberId;
    /**
     * 使用的优惠券
     */
    @ApiModelProperty(value = "使用的优惠券")
    private Long couponId;
    /**
     * 优惠券抵扣金额（分）
     */
    @ApiModelProperty(value = "优惠券抵扣金额（分）")
    private Long couponAmount;
    /**
     * 运费金额（分）
     */
    @ApiModelProperty(value = "运费金额（分）")
    private Long freightAmount;
    /**
     * 应付总额（分）
     */
    @ApiModelProperty(value = "应付总额（分）")
    private Long payAmount;
    /**
     * 支付时间
     */
    @ApiModelProperty(value = "支付时间")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date payTime;
    /**
     * 支付方式【1->微信jsapi；2->支付宝；3->余额； 4->微信app；】
     */
    @ApiModelProperty(value = "支付方式【1->微信jsapi；2->支付宝；3->余额； 4->微信app；】")
    private Integer payType;
    /**
     * 商户订单号
     */
    @ApiModelProperty(value = "商户订单号")
    private String outTradeNo;
    /**
     * 微信支付订单号
     */
    @ApiModelProperty(value = "微信支付订单号")
    private String transactionId;
    /**
     * 商户退款单号
     */
    @ApiModelProperty(value = "商户退款单号")
    private String outRefundNo;
    /**
     * 微信支付退款单号
     */
    @ApiModelProperty(value = "微信支付退款单号")
    private String refundId;
    /**
     * 发货时间
     */
    @ApiModelProperty(value = "发货时间")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date deliveryTime;
    /**
     * 确认收货时间
     */
    @ApiModelProperty(value = "确认收货时间")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date receiveTime;
    /**
     * 评价时间
     */
    @ApiModelProperty(value = "评价时间")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date commentTime;

    /**
     * 逻辑删除标识(1:已删除；0:正常)
     */
    @ApiModelProperty(value = "逻辑删除标识(1:已删除；0:正常)")
    private Integer deleted;

    @ApiModelProperty(value = "订单明细")
    private List<OrderItem> orderItems;


}